/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package umlapp.elements;

import java.io.Serializable;
import umlapp.Drawable;

/**
 *
 * Abstraktná tried pre všetky elementy a vzťahy.
 *
 * @author Peter Chovanec
 * @author Mario Jaros
 */
public abstract class AElement implements Drawable, Serializable {

    /**
     * Meno elemenu alebo vzťahu.
     */
    protected String name;
    /**
     * Údaje o polohe a rozmeroch.
     */
    protected Dimension dimension;

    /**
     * Konštruktor triedy AElement priradí atribútom hodnoty
     *
     * @param name parameter na inicializáciu atribútu name
     * @param dimension paremeter na inicializáciu atribútu dimension
     */
    public AElement(String name, Dimension dimension) {
        this.name = name;
        this.dimension = dimension;
    }

    /**
     * vracia atribút meno
     *
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * nastavuje atribút meno
     *
     * @param name meno na nastavenie
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * nastavuje parameter dimension
     *
     * @param dimension dimension na nastavenie
     */
    @Override
    public void setDimension(Dimension dimension) {
        this.dimension = dimension;
    }

    /**
     * nastavenie dimension pomocou
     *
     * @param x zaciatocna x-ova súradnica
     * @param y začiatočná y-ová súradnica
     * @param width šírka objektu
     * @param height dĺžka objektu
     */
    @Override
    public void setDimension(int x, int y, int width, int height) {
        dimension.x = x;
        dimension.y = y;
        dimension.width = width;
        dimension.height = height;
    }

    /**
     * nastavenie lokácie objektu
     *
     * @param x x-ová súradnica
     * @param y y-ová súradnica
     */
    @Override
    public void setLocation(int x, int y) {
        dimension.x = x;
        dimension.y = y;
    }

    /**
     * ziskanie atribútu dimension
     *
     * @return dimension
     */
    @Override
    public Dimension getDimension() {
        return dimension;
    }
}
